using System;
using Microsoft.SPOT;

namespace MicroContainer
{
   public delegate object FactoryMethodDelegate();

   public interface IContainerBuilder
   {
      IContainerBuilder RegisterType(Type from, Type to);
      IContainerBuilder RegisterType(Type from, Type to, string name);
      IContainerBuilder RegisterType(Type from, Type to, string name, InstantiationMode mode);

      IContainerBuilder RegisterType(Type from, Delegate to);
      IContainerBuilder RegisterType(Type from, Delegate to, string name);
      IContainerBuilder RegisterType(Type from, Delegate to, string name, InstantiationMode mode);      

      IMicroContainer Build();
   }   
}
